Traditionally, software has been distributed on floppy disks. Each disk typically contained one application program and was individually sold to a user. The purchase of the disk carried with it an implicit license to use the program. With the advent of high capacity storage media, such as CD-ROM, the distribution of software has evolved. Software vendors have begun to distribute their software on CD-ROM. A single CD-ROM can contain hundreds of a vendor's application programs. Since each user may not want to purchase every program that is stored on the CD-ROM, and since vendors do not want users to be able to access programs that they have not purchased, some vendors have stored their programs in encrypted form on the CD-ROM. The vendors then need to enable users to obtain the decrypted form of the program(s) that they have purchased.
One solution is to encrypt each application program on every CD-ROM using a single encryption key and to provide users with the corresponding decryption key once they have purchased a particular program. Following this system, when a user desires to purchase an application program stored on a CD-ROM, the user simply calls the vendor, gives the vendor the user's credit card number, and receives a decryption key from the vendor. The decryption key is input to an installation program that is also stored on the CD-ROM. The installation program decrypts the application program that the user has purchased and installs the program on the user's computer.
While this system makes the sale of the vendor's software more convenient for users, it also makes unauthorized access to the software easier. The user who has purchased the application program can reveal the decryption key to others who have not purchased the program and thus compromise the security provided by the encryption. Furthermore, since there is a single decryption key for each application program, the vendor cannot trace the key to the user who revealed it. Thus, any time software is widely distributed in encrypted form and a single encryption key and decryption key are used for all copies of the software, piracy is difficult to control.
Another solution is to encrypt each application program on each CD-ROM using a unique encryption key and to provide users with the corresponding decryption key once they have purchased a particular application program. While this system appears to provide total security (because it is irrelevant whether a user distributes his key to other users since each CD-ROM has unique keys), it is commercially infeasible. CD-ROM's are designed to be mass produced. If each CD-ROM has unique encryption and decryption keys, the CD-ROM's cannot be mass produced. Rather, each CD-ROM must be individually produced because the encrypted form on each CD-ROM is different. Thus, the cost of producing CD-ROM's with unique encryption and decryption keys is prohibitive.
Any solution involving encryption must be based on an encryption algorithm. Generally, there are two types of encryption algorithms, symmetric and public key. A symmetric algorithm is one in which the encryption key and the decryption key can be generated from each other. Often, the encryption key and the decryption key will be the same. A public key algorithm, on the other hand, is one in which the encryption key and the decryption key are different. Generally, the encryption key is made public, the decryption key is kept secret, and the private decryption key cannot be easily generated from the public encryption key.
A well-known public key algorithm is the RSA algorithm. One embodiment of the RSA algorithm can be summarized as follows:
1. Select two prime numbers, p and q; PA1 2. Compute the product of these numbers, n=pq; PA1 3. Select encryption key e such that e is relatively prime to ((p-1)(q-1)); PA1 4. Compute decryption key d where d=e.sup.-1 (mod p-1)(q-1); PA1 5. Encrypt message m using c=m.sup.e mod n; and PA1 6. Decrypt encrypted message c using m=c.sup.d mod n.
A cryptographic communications system and method based on the RSA algorithm are found in U.S. Pat. No. 4,405,829 to Rivest et al. This patent is licensed by Public Key Partners of Sunnyvale, Calif.
Solutions involving encryption can only provide a certain level of security. Given sufficient resources, most encryption schemes can be broken. The goal is to make the expense of breaking the encryption scheme, or the risk associated with breaking the encryption scheme, greater than the value of the information that is encrypted. In such a situation, users generally will not expend the resources required to break the scheme. Thus, a solution is needed to enable software vendors to widely distribute their software in encrypted form on CD-ROM and to control access to the decrypted form of the software by users who have not purchased the software. This solution should be economically feasible for software vendors and must provide a reasonable level of security.